/*
 * 起泡排序
 *
 * 题目链接：https://programming.pku.edu.cn/probset/94fe0bee6d4c4e68b4b19c3db5d14a33/e26c614f1d56429f8eb787506e22659e/
 * 作者：lyazj <seeson@pku.edu.cn>
 *
 * 本题所需主要知识点：
 *   - 起泡排序
 */

#include <stdio.h>

static void bubble_sort(int a[], int n)
{
  // 下面是从左到右的起泡排序，你能否将其改造成从右到左的实现？
  for(int l = n; l > 1; --l) {  // 待排序长度递减
    for(int i = 0; i < l - 1; ++i) {  // 逐对比较/交换相邻元素
      if(a[i] > a[i + 1]) {  // C++ 中可用 std::swap() 或 std::tie 等方式实现
        int t = a[i];
        a[i] = a[i + 1], a[i + 1] = t;
      }
    }
  }
}

int main(void)
{
  // 输入
  int n;
  scanf("%d", &n);
  int a[n];
  for(int i = 0; i < n; ++i) scanf(" %d", &a[i]);

  // 排序
  bubble_sort(a, n);

  // 输出
  for(int i = 0; i < n; ++i) printf("%d\n", a[i]);

  return 0;
}
